#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Time    : 2020/7/30 下午3:50
# @Author  : fugang_le
# @Software: PyCharm


HZPY = ['gu', 'qiao', 'qian', 'qve', 'ge', 'gang', 'ga', 'lian', 'liao', 'rou', 'zong', \
        'tu', 'seng', 'yve', 'ti', 'te', 'jve', 'ta', 'nong', 'zhang', 'fan', 'ma', 'gua', 'die', 'gui', \
        'guo', 'gun', 'sang', 'diu', 'zi', 'ze', 'za', 'chen', 'zu', 'ba', 'dian', 'diao', 'nei', 'suo', \
        'sun', 'zhao', 'sui', 'kuo', 'kun', 'kui', 'cao', 'zuan', 'kua', 'den', 'lei', 'neng', 'men', \
        'mei', 'tiao', 'geng', 'chang', 'cha', 'che', 'fen', 'chi', 'fei', 'chu', 'shui', 'me', 'tuan', \
        'mo', 'mi', 'mu', 'dei', 'cai', 'zhan', 'zhai', 'can', 'ning', 'wang', 'pie', 'beng', 'zhuang', \
        'tan', 'tao', 'tai', 'song', 'ping', 'hou', 'cuan', 'lan', 'lao', 'fu', 'fa', 'jiong', 'mai', \
        'xiang', 'mao', 'man', 'a', 'jiang', 'zun', 'bing', 'su', 'si', 'sa', 'se', 'ding', 'xuan', \
        'zei', 'zen', 'kong', 'pang', 'jie', 'jia', 'jin', 'lo', 'lai', 'li', 'peng', 'jiu', 'yi', 'yo', \
        'ya', 'cen', 'dan', 'dao', 'ye', 'dai', 'zhen', 'bang', 'nou', 'yu', 'weng', 'en', 'ei', 'kang', \
        'dia', 'er', 'ru', 'keng', 're', 'ren', 'gou', 'ri', 'tian', 'qi', 'shua', 'shun', 'shuo', 'qun', \
        'yun', 'xun', 'fiao', 'zan', 'zao', 'rang', 'xi', 'yong', 'zai', 'guan', 'guai', 'dong', 'kuai', \
        'ying', 'kuan', 'xu', 'xia', 'xie', 'yin', 'rong', 'xin', 'tou', 'nian', 'niao', 'xiu', 'fo', \
        'kou', 'niang', 'hua', 'hun', 'huo', 'hui', 'shuan', 'quan', 'shuai', 'chong', 'bei', 'ben', \
        'kuang', 'dang', 'sai', 'ang', 'sao', 'san', 'reng', 'ran', 'rao', 'ming', 'tei', 'lie', 'lia', \
        'min', 'pa', 'lin', 'mian', 'mie', 'liu', 'zou', 'miu', 'nen', 'kai', 'kao', 'kan', 'ka', 'ke', \
        'yang', 'ku', 'deng', 'dou', 'shou', 'chuang', 'nang', 'feng', 'meng', 'cheng', 'di', 'de', 'da', \
        'bao', 'gei', 'du', 'gen', 'qu', 'shu', 'sha', 'she', 'ban', 'shi', 'bai', 'nun', 'nuo', 'sen', 'lve', \
        'kei', 'fang', 'teng', 'xve', 'lun', 'luo', 'ken', 'wa', 'wo', 'ju', 'tui', 'wu', 'le', 'ji', 'huang', \
        'tuo', 'cou', 'la', 'mang', 'ci', 'tun', 'tong', 'ca', 'pou', 'ce', 'gong', 'cu', 'lv', 'dun', 'pu', \
        'ting', 'qie', 'yao', 'lu', 'pi', 'po', 'suan', 'chua', 'chun', 'chan', 'chui', 'gao', 'gan', 'zeng', \
        'gai', 'xiong', 'tang', 'pian', 'piao', 'cang', 'heng', 'xian', 'xiao', 'bian', 'biao', 'zhua', 'duan', \
        'cong', 'zhui', 'zhuo', 'zhun', 'hong', 'shuang', 'juan', 'zhei', 'pai', 'shai', 'shan', 'shao', 'pan', \
        'pao', 'nin', 'hang', 'nie', 'zhuai', 'zhuan', 'yuan', 'niu', 'na', 'miao', 'guang', 'ne', 'hai', 'han', \
        'hao', 'wei', 'wen', 'ruan', 'cuo', 'cun', 'cui', 'bin', 'bie', 'mou', 'nve', 'shen', 'shei', 'fou', 'xing', \
        'qiang', 'nuan', 'pen', 'pei', 'rui', 'run', 'ruo', 'sheng', 'dui', 'bo', 'bi', 'bu', 'chuan', 'qing', \
        'chuai', 'duo', 'o', 'chou', 'ou', 'zui', 'luan', 'zuo', 'jian', 'jiao', 'sou', 'wan', 'jing', 'qiong', \
        'wai', 'long', 'yan', 'liang', 'lou', 'huan', 'hen', 'hei', 'huai', 'shang', 'jun', 'hu', 'ling', 'ha',
        'he', \
        'zhu', 'ceng', 'zha', 'zhe', 'zhi', 'qin', 'pin', 'ai', 'chai', 'qia', 'chao', 'ao', 'an', 'qiu', 'ni',
        'zhong', \
        'zang', 'nai', 'nan', 'nao', 'chuo', 'tie', 'you', 'nu', 'nv', 'zheng', 'leng', 'zhou', 'lang', 'e', 'jue',
        'xue', \
        'yue', 'eng', 'lue', 'nue', 'que', 'rua']


# 拼音转汉字
def pinyin_2_hanzi(pinyinList):
    from Pinyin2Hanzi import DefaultDagParams
    from Pinyin2Hanzi import dag
    dagParams = DefaultDagParams()
    result = dag(dagParams, pinyinList, path_num=10) # 10代表候选值个数

    results = []
    for item in result:
        score = item.score
        res = item.path     # 转换结果
        print(score, res)

        results.append(res)
    return results


# 汉字转拼音
def hanzi_2_pinyin(hanzi_str):
    from pypinyin import lazy_pinyin
    res = lazy_pinyin(hanzi_str)
    print(res)
    return res


# 切割拼音字符串 例如：ni hao -> ni hao
def get_split_py(cls, text):
    def get_py(start_idx):
        py_list = []
        for i in range(start_idx, text_size + 1):
            temp_py = text[start_idx:i]
            if temp_py in HZPY:
                py_list.append([temp_py, start_idx, i])
        if not py_list:
            return
        result = py_list[-1][0]

        if py_list[-1][2] < text_size:
            nr = text[py_list[-1][2] - 1:py_list[-1][2] + 1]
            anr = text[py_list[-1][2]:py_list[-1][2] + 2]
            if nr in HZPY and anr not in HZPY and len(py_list) > 1:
                result = py_list[-2][0]
        return result

    result_list = []
    text_size = len(text)
    split_text_idx = 0
    while split_text_idx < text_size:
        split_py = get_py(split_text_idx)
        if split_py:
            split_text_idx += len(split_py)
            result_list.append(split_py)
        else:
            split_text_idx += 1
    return result_list


if __name__ == '__main__':
    list1 = ['ping','zheng']
    print("input：['ping','zheng']")
    res = pinyin_2_hanzi(list1)


    s = ''
    for item in res:
        s += ''.join(item)
    print(''.join(set(s)))

    # hanzi = '平整'
    # hanzi_2_pinyin(hanzi)
